from django.http import JsonResponse
from django.contrib.auth.mixins import LoginRequiredMixin

class LoginRequiredJSONMixin(LoginRequiredMixin):
    """继承LoginRequeiredMixin类实现登陆认证功能"""

    def handle_no_permission(self):
        return JsonResponse({'code': 400,
                             'errmsg': '用户为登陆'})



    """
def my_decorator(func):
    '''自定义的装饰器:判断是否登录'''

    def wrapper(request, *args, **kwargs):
        if request.user.is_authenticated:
            # 如果用户登录, 则进入这里,正常执行
            return func(request, *args, **kwargs)
        else:
            # 如果用户未登录,则进入这里,返回400的状态码
            return JsonResponse({'code': 400,
                                      'errmsg': '请登录后重试'})
        return wrapper







class LoginRequiredMixin(object):
    # 自定义Mixin扩展类

    # 重写 as_view 方法
    @classmethod
    def as_view(cls, *args, **kwargs):
        view = super().as_view(*args, **kwargs)
        # 调用上面的装饰器进行过滤处理
        return my_decorator(view)
    """